import {
    queryString
} from '../../utils/api.js'
const app = getApp(); // App 对象。

// import from 这个是文件是代码。
const faceMap = {
    emotion: {
        angry: '愤怒',
        disgust: '厌恶',
        fear: '恐惧',
        happy: '高兴',
        sad: '伤心',
        surprise: '惊讶',
        neutral: '无表情',
        pouty: '撅嘴',
        grimace: '鬼脸'
    },
    expression: {
        none: '不笑',smile: '微笑',laugh: '大笑'
    },
    gender: {
        male: '男生', female: '女生'
    },
    glasses: {
        none: '无眼镜',common: '普通眼镜',sun: '墨镜'
    }
}

// pages/home/home.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        windowHeight: 0,
        photoSrc: '',
        isBack: true,
        face: null,
        map: faceMap
    },

    reverseCamera() {
        this.setData({
            isBack: !this.data.isBack
        })
    },

    takePhoto() {
        wx.createCameraContext().takePhoto({
            quality: 'high',
            success: res => {
                this.setData({
                    photoSrc: res.tempImagePath
                }, () => this.detectFace())
            }
        })
    },

    chooseAlbum() {
        wx.chooseImage({
            count: 1,
            sizeType: ['original'],
            sourceType: ['album'],
            success: res => {
                res.tempFilePaths.length && this.setData({
                    photoSrc: res.tempFilePaths[0]
                }, () => this.detectFace());
            },
            fail() {
                wx.showToast({
                    title: '选择相册失败！',
                    icon: 'none'
                })
            }
        })
    },

    reChoose() {
        this.setData({
            photoSrc: '',
            face: null
        });
    },

    detectFace() {
        const {
            token: access_token
        } = app.store;
        if (access_token) {
            // 拿到文件管理对象。
            const fm = wx.getFileSystemManager();
            const photoBase64 = fm.readFileSync(this.data.photoSrc, 'base64');

            wx.showLoading({
                title: '正在检测中..'
            });

            wx.request({
                method: 'post',
                url: 'https://aip.baidubce.com/rest/2.0/face/v3/detect' + queryString({
                    access_token
                }),
                data: {
                    image: photoBase64,
                    image_type: 'BASE64',
                    face_field: 'age,beauty,expression,gender,glasses,emotion'
                },
                success: res => {
                    console.log(res);
                    // data.result 可能 为 null
                    const {
                        result
                    } = res.data
                    if (result && result.face_list.length) {
                        const {
                            age,
                            beauty,
                            emotion: {
                                type: emotion
                            },
                            expression: {
                                type: expression
                            },
                            gender: {
                                type: gender
                            },
                            glasses: {
                                type: glasses
                            }
                        } = result.face_list[0];

                        // 存储需要的数据。
                        this.setData({
                            face: {
                                age,
                                beauty,
                                emotion,
                                expression,
                                gender,
                                glasses
                            }
                        });
                    }
                },
                fail() {
                    wx.showToast({
                        title: '人脸识别失败！',
                        icon: 'none'
                    })
                },
                complete(){
                    wx.hideLoading();
                }
            })
        } else {
            wx.showToast({
                title: '连接 AI 接口失败！',
                icon: 'none'
            })
        }
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {
        const {
            windowHeight
        } = wx.getSystemInfoSync();
        this.setData({
            windowHeight
        });
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})